import { message } from 'antd'

// 计算百分比（CPU使用率）
// Math.floor() 向下取整
export function totalPercentage(totalmem: number, freemem: number): number {
  return Math.floor(((totalmem - freemem) / totalmem) * 100)
}

// 全屏浏览器
// Element.requestFullscreen() 方法用于发出异步请求使元素进入全屏模式。
export function fullscreen() {
  try {
    // TS不知道htmlEl有无requestFullscreen属性，访问任意属性可以断言为any
    const htmlEl = document.documentElement as any
    htmlEl.requestFullscreen
      ? htmlEl.requestFullscreen()
      : htmlEl.webkitRequestFullScreen
      ? htmlEl.webkitRequestFullScreen()
      : htmlEl.mozRequestFullScreen
      ? htmlEl.mozRequestFullScreen()
      : htmlEl.msRequestFullscreen
      ? htmlEl.msRequestFullscreen()
      : message.warn('您所使用的浏览器不支持全屏')
  } catch {
    message.warn('您所使用的浏览器不支持全屏')
  }
}

// 退出全屏浏览器
// Document.exitFullscreen() 方法用于让当前文档退出全屏模式
// 如果一个元素A在请求进去全屏模式之前，已经存在其他元素处于全屏状态，当这个元素A退出全屏模式之后，之前的元素仍然处于全屏状态。浏览器内部维护了一个全屏元素栈用于实现这个目的。
export function exitFullscreen() {
  try {
    const doc = document as any
    doc.exitFullscreen
      ? doc.exitFullscreen()
      : doc.webkitCancelFullScreen
      ? doc.webkitCancelFullScreen()
      : doc.mozCancelFullScreen
      ? doc.mozCancelFullScreen()
      : doc.msExitFullscreen
      ? doc.msExitFullscreen()
      : message.warn('您所使用的浏览器不支持退出全屏, 请按ESC')
  } catch (e) {
    message.warn('您所使用的浏览器不支持退出全屏, 请按ESC')
  }
}

// 随机字符串
// Math.random() 函数返回一个浮点数,区间在[0,1)
const CODE = 'qwertyuipasdfghjklxcvbnm13456789'
export function randomCode(num = 4) {
  let data = ''
  for (let i = 0; i < num; i++) {
    const random = Math.floor(Math.random() * CODE.length)
    data += CODE[random]
  }
  return data
}
